home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 104 - PROSEL - 3.3.5 S2.A.dsk / SUPRA.NEW.S < prev   
Text File  |  2019-02-17  |  4KB  |  215 lines

  1. ********************************
  2. *   SupraModem Driver          *
  3. ********************************
  4.  
  5.           DSK SUPRA.MDM
  6.  
  7. DATAREG   = $C088
  8. STATREG   = $C089
  9. CMDREG    = $C08A
  10. CONREG    = $C08B
  11.  
  12. STROBE    = $C070
  13.  
  14.           ORG $0E00
  15.  
  16. MDMSLOT   DFB 2*16       ;Slot * 16
  17. TRANRCV   DFB $43        ;Reserved
  18. SPCINIT   DFB 0
  19. BYCNT     DFB 0,0,0      ;byte-counting
  20.  
  21.           JMP MDMINIT    ;Init modem
  22.           JMP MDMRSET    ;Set to answer
  23.           JMP MDMRING    ;Check for ring
  24.           JMP MDMANS     ;Force answer
  25.           JMP MDMHANG    ;Hang up modem
  26.           JMP MDMIN      ;Get input data
  27.           JMP MDMOUT     ;Send data
  28.           JMP MDMDCD     ;Check for DCD
  29.  
  30. MDMINIT   LDA #0
  31.           LDX MDMSLOT
  32.           STA STATREG,X
  33.           STA CMDREG,X
  34.           CLC
  35.           TXA
  36.           ADC #$88
  37.           STA OUT3+1
  38. INITRTS   RTS
  39.  
  40. MDMRSET   LDX MDMSLOT
  41.           LDA #$00
  42.           STA CMDREG,X
  43.           LDA #$00
  44.           JSR DELAY
  45.           JSR DELAY
  46.           LDA #$0B
  47.           STA CMDREG,X
  48.           LDY CURRSPD
  49.           JSR SETSPD
  50.           LDA DATAREG,X  ;clear RCV reg
  51.           LDX #$FF
  52. MDMR1     INX
  53.           LDA STRINGS,X
  54.           BEQ MDMR2
  55.           JSR MDMOUT
  56.           JMP MDMR1
  57. MDMR2     LDY #$FA
  58. MDMR3     DEY
  59.           BEQ MDMRSET
  60.           LDA #$1E
  61.           JSR DELAY
  62.           JSR MDMIN
  63.           BCC MDMR3
  64.           AND #$7F
  65.           CMP #'K'
  66.           BNE MDMR3
  67.           LDA #$00
  68.           STA BYCNT
  69.           STA BYCNT+1
  70.           STA BYCNT+2
  71.           CLC
  72.           RTS
  73.  
  74. MDMHUH    JMP MDMRSET
  75.  
  76. MDMRING   JSR MDMIN
  77.           BCC RINGRTS
  78.           AND #$7F
  79.  
  80.           TAY
  81.           LDA STATEMP
  82.           AND #$07
  83.           BNE MDMHUH     ;if framing errors, reset modem
  84.           TYA
  85.  
  86.           CMP #'E'
  87.           CLC
  88.           BNE RINGRTS
  89. RING1     JSR MDMIN
  90.           BCC RING1
  91.           LDY #$00
  92.           AND #$7F
  93.           CMP #'R'
  94.           BEQ MDMHUH
  95.           CMP #$0D       ;compare <CR>
  96.           BEQ RING2
  97.           CMP #'3'
  98.           BEQ RING2
  99.           INY
  100.           CMP #'1'
  101.           BEQ RING2
  102.           INY
  103.           CMP #'2'
  104.           BNE RING1
  105. RING2     JSR SETSPD
  106.           LDY #$05
  107. RING3     LDA #$00
  108.           JSR DELAY
  109.           DEY
  110.           BNE RING3
  111.           SEC
  112. RINGRTS   RTS
  113.  
  114. MDMANS    LDX #$00
  115. ANS1      LDA PICKUP,X
  116.           BEQ ANSRTS
  117.           JSR MDMOUT
  118.           INX
  119.           BNE ANS1
  120. ANSRTS    RTS
  121.  
  122. MDMHANG   LDX MDMSLOT
  123.           LDA #$00
  124.           STA CMDREG,X
  125.           RTS
  126.  
  127. MDMIN     STX TEMPX
  128.           LDX MDMSLOT
  129.           LDA STATREG,X
  130.  
  131.           STA STATEMP
  132.  
  133.           AND #$08
  134.           CLC
  135.           BEQ INRTS
  136.           LDA DATAREG,X
  137.           SEC
  138. INRTS     LDX TEMPX
  139.           RTS
  140.  
  141. MDMOUT    STX TEMPX
  142.           DEC CCOUNT
  143.           BNE OUT1
  144.           INC BYCNT
  145.           BIT BYCNT
  146.           BVC OUT1
  147.           LDX #$00
  148.           STX BYCNT
  149.           INC BYCNT+1
  150.           BIT BYCNT+1
  151.           BVC OUT1
  152.           LDX #$00
  153.           STX BYCNT+1
  154.           INC BYCNT+2
  155. OUT1      LDX MDMSLOT
  156.           PHA
  157. OUT2      LDA STATREG,X
  158.           AND #$10
  159.           BEQ OUT2
  160.           PLA
  161. OUT3      STA DATAREG
  162.           LDX TEMPX
  163.           RTS
  164.  
  165. MDMDCD    STX TEMPX
  166.           PHA
  167.           LDX MDMSLOT
  168.           LDA STATREG,X
  169.           AND DCDMASK
  170.           CLC
  171.           BNE DCDRTS
  172.           SEC
  173. DCDRTS    PLA
  174.           LDX TEMPX
  175.           RTS
  176.  
  177. SETSPD    STX TEMPX
  178.           LDX MDMSLOT
  179.           LDA SPDTBL,Y
  180.           STA CONREG,X
  181.           LDA #$01
  182.           STA SPCINIT
  183.           CPY #$00
  184.           BEQ SETRTS
  185.           ASL SPCINIT
  186. SET1      ASL SPCINIT
  187.           DEY
  188.           BNE SET1
  189. SETRTS    LDX TEMPX
  190.           RTS
  191.  
  192. DELAY     SEC
  193. DEL2      PHA
  194. DEL1      BIT STROBE
  195.           SBC #$01
  196.           BNE DEL1
  197.           PLA
  198.           SBC #$01
  199.           BNE DEL2
  200.           RTS
  201.  
  202. SPDTBL    DFB $16,$18,$1A,$1C,$1E ;3,12,24,48,96 baud
  203.  
  204. STRINGS   ASC 'ATX3S0=1&C1&D2S2=128L' ;first string
  205.           HEX 0D00
  206.  
  207. PICKUP    ASC 'ATA'      ;Pickup phone
  208.           HEX 0D00
  209.  
  210. DCDMASK   DFB $40
  211. CURRSPD   DFB 2
  212. CCOUNT    DS 1
  213. TEMPX     DS 1
  214. STATEMP   DS 1
  215.